www.gusucode.com > LTE基带收发仿真系统matlab源码程序 > LTE baseband simulation/LTE_load_parameters.m
% LTE_load_parameters 脚本函数 用于获取每个独立参数,并检查参数的取值范围是否恰当 % 请从 LTE_main_gui_final 运行该仿真平台 % % Author: 程式小组(徐萌 张妙 张晓庆) % Date: 2010-06-20 % ========================================================== errNum = 1; % 参数配置错误统计 errorMsg = []; % 参数配置错误提示 % 从文件读取或配置参数 if strcmp(LTE_par.setpar,'loadPar') inflie = '小区参数.dat'; fidin=fopen(inflie,'r'); % 打开原始数据文件 k = 1; while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读入一行文本(不含回车键) if ~isempty(tline) % 判断是否空行 Para(k,:) = tline(1:4); end k = k+1; end fclose(fidin); Para_ = hex2dec(Para(1:end,:)); % 参数是十六进制表示,将其转为10进制 % 仿真次数设为1 LTE_par.nTime = 1; % 读取当前帧号 LTE_par.iFrame = Para_(1); % 读取系统用户数 if Para_(2) >= 1 && Para_(2) <= 10 LTE_par.nUE = Para_(2); else errNum = errNum+1; errorMsg{errNum} = 'ERROR: 载入参数配置出错 系统用户数不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT: 系统用户数取值范围为:1-10'; end % 读取小区ID LTE_par.BS_par.cellID = Para_(3); % 读取系统带宽 0:20MHz 1:10MHz if Para_(4) == 0 LTE_par.sysBand = 20000000; elseif Para_(4) == 1 LTE_par.sysBand = 10000000; else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 系统带宽配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:系统带宽取值为:{0:20MHz 1:10MHz}'; end % 读取天线端口数,取值为1 2 或4 if Para_(5) == 0 LTE_par.BS_par.nAnt = 1; elseif Para_(5) == 1 LTE_par.BS_par.nAnt = 2; elseif Para_(5) == 2 LTE_par.BS_par.nAnt = 4; else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 BS天线数不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:BS天线数应当为 1 2 4'; end % 读取CP配置 if Para_(6) == 0 LTE_par.cyclicPrefix = 'normal'; % 此处不支持'extend' else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 该平台暂不支持扩展循环前缀'; errNum = errNum+1; errorMsg{errNum} = 'HINT:循环前缀取值为:{0:常规循环前缀}'; end % 读取子帧号 if Para_(7) >=0 && Para_(7) <= 9 LTE_par.iSubFrame = Para_(7); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 子帧号配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:系统带宽取值为:0-9'; end % 读取用户索引号,取值为0~9 if Para_(8) >= 0 && Para_(8) <=9 LTE_par.schedule.indexUE = Para_(8); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户索引号配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户索引号取值为:0-9'; end % 读取当前UE的RNTI LTE_par.UE_par.RNTI = Para_(9); % 读取码流,取值为0:1个码字 1:2个码字 if Para_(14) == 0 || Para_(14) == 1 LTE_par.UE_par.nCW = Para_(14)+1; else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户TB个数配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户传输块数(或称码字数)取值为:1或2'; end % 读取调制方式 1:QPSK--2bit 2:16QAM--4bit 3:64QAM--6bit if Para_(10) == 1 LTE_par.UE_par.Qm = 2*ones(LTE_par.UE_par.nCW,LTE_par.nUE); elseif Para_(10) == 2 LTE_par.UE_par.Qm = 4*ones(LTE_par.UE_par.nCW,LTE_par.nUE); elseif Para_(10) == 3 LTE_par.UE_par.Qm = 6*ones(LTE_par.UE_par.nCW,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 调制方式配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:调制方式取值为:{1:QPSK 2:16QAM 3:64QAM}'; end % 读取预处理模式 if Para_(11) == 1 LTE_par.UE_par.preProcess = 'singleAnt'; elseif Para_(11) == 2 LTE_par.UE_par.preProcess = 'tranmitDiversity'; elseif Para_(11) == 3 LTE_par.UE_par.preProcess = 'spatialMultiplexing'; else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 预处理模式配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:预处理模式为:{1:singleAnt,2:tranmitDiversity or 3:spatialMultiplexing}'; end % 读取用户层数,取值为1~4 if Para_(12) >= 1 && Para_(12) <= 4 LTE_par.UE_par.nLayer = Para_(12)*ones(1,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户层数配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户层数取值为:1-4'; end % 读取码本号,仅在传输模式4 5 6下有效 if Para_(13) >= 0 && Para_(13) <= 15 LTE_par.UE_par.PMI = Para_(13)*ones(1,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户预编码配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户层预编码序号取值为:{0-3:2天线 0-15:4天线}'; end % 读取传输块TB0 TB1大小,如果只有一个TB,则只读取 TB0 if Para_(15)>0 LTE_par.UE_par.sizeTB(1,:) = Para_(15)*ones(1,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户TB大小配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:参见36.213 V8.7.0 section 7.1.7.1'; end if LTE_par.UE_par.nCW == 2 if Para_(16)>0 LTE_par.UE_par.sizeTB(2,:) = Para_(16)*ones(1,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户TB大小配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:参见36.213 V8.7.0 section 7.1.7.1'; end end % 读取UE用于PDSCH的RE数目 if Para_(17) > 0 LTE_par.UE_par.nRE = Para_(17); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户RE数目配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户RE数目为正整数'; end % 读取TB0和TB1冗余版本号,取值为0,1,2,3 if Para_(18) >= 0 && Para_(18) <= 3 LTE_par.UE_par.rvidx(1,:) = Para_(18)*ones(1,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户冗余版本号配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户冗余版本号为0-3'; end if LTE_par.UE_par.nCW == 2 if Para_(19) >= 0 && Para_(19) <= 3 LTE_par.UE_par.rvidx(2,:) = Para_(19)*ones(1,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户冗余版本号配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户冗余版本号为0-3'; end end % 读取KMIMO,在传输模式3和4下取2,其他模式下取1 if Para_(20) >= 1 && Para_(20) <= 2 LTE_par.UE_par.KMIMO = Para_(20); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户KMIMO配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户KMIMO取值为1或2'; end % 读取用户类别 if Para_(21) >= 1 && Para_(21) <= 5 LTE_par.UE_par.category = Para_(21); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户类别配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户冗余版本号为1-5'; end % 读取控制格式指示大小 if Para_(22) >= 1 && Para_(22) <= 3 LTE_par.CFI = Para_(22); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 系统CFI配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:系统CFI取值为1-3'; end % 读取调制编码序号IMCS,取值为0~29 if Para_(23) >= 0 && Para_(23) <= 29 LTE_par.UE_par.IMCS = Para_(23)*ones(LTE_par.UE_par.nCW,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户调制编码序号配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户调制编码序号取值为0-28'; end % 读取物理资源数 if Para_(24) >= 0 LTE_par.UE_par.nRB = Para_(24)*ones(1,LTE_par.nUE); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户物理资源数配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户物理资源数最大值参照系统带宽'; end % 读取传输模式,共7种 1: 'singleAntennaPort' 2: 'tranmitDiversity' 3: 'largeDelayCDD' 4: 'closedLoopSM' % 5:'multiuserMIMO' 6: 'singleLayerCLSM' 7: 'singlePort5' if Para_(25) >= 1 && Para_(25) <= 7 LTE_par.UE_par.transMod = Para_(25); else errNum = errNum+1; errorMsg{errNum} = 'ERROR:载入参数配置出错 用户传输模式配置不合法'; errNum = errNum+1; errorMsg{errNum} = 'HINT:用户传输模式为0-7'; end % 系统平台完成收端过程,以下参数为'小区参数.dat'以外和相关收端 LTE_par.UE_par.nAnt = 1; LTE_par.channelFreq = false; LTE_par.channelMod = 'Ideal'; LTE_par.UE_par.M_0_SYMB = LTE_par.UE_par.nRE; elseif strcmp(LTE_par.setpar,'manuPar') % =============== 系统公共参数 =========================== % 读取仿真时间 LTE_par.nTime = par.nTime; % 读取起始帧号 LTE_par.iFrame = par.iFrame; % 读取子帧号 LTE_par.iSubFrame = par.iSubFrame; % 读取系统用户数 LTE_par.nUE = par.nUE; % 读取小区ID LTE_par.BS_par.cellID = par.cellID; % 读取系统带宽 0:20MHz 1:10MHz if par.sysBand == 0 LTE_par.sysBand = 20000000; elseif par.sysBand == 1 LTE_par.sysBand = 10000000; end % 读取CP配置 if par.cpStyle == 1 LTE_par.cyclicPrefix = 'normal'; % 此处不支持'extend' else error('the parameter cyclic prefix is invalid. Please choose 0 \n') end % 读取用户类别 LTE_par.UE_par.category = par.ueCateg; % 读取当前UE的RNTI LTE_par.UE_par.RNTI = par.RNTI; % 读取控制格式指示大小 LTE_par.CFI = par.CFI; % ============= 用户公共参数 ================================== % 读取UE天线端口数,取值为1 2 LTE_par.UE_par.nAnt = par.nRx; % 读取BS天线端口数,取值为1 2 4 LTE_par.BS_par.nAnt = par.nTx; % 读取预处理模式 if par.preProcess == 1 LTE_par.UE_par.preProcess = 'singleAnt'; elseif par.preProcess == 2 LTE_par.UE_par.preProcess = 'tranmitDiversity'; elseif par.preProcess == 3 LTE_par.UE_par.preProcess = 'spatialMultiplexing'; end % 读取传输模式,共7种 1: 'singleAntennaPort' 2: 'tranmitDiversity' 3: 'largeDelayCDD' 4: 'closedLoopSM' % 5:'multiuserMIMO' 6: 'singleLayerCLSM' 7: 'singlePort5' LTE_par.UE_par.transMod = par.transMod; % 读取物理资源数 LTE_par.UE_par.nRB = par.nRB*ones(1,LTE_par.nUE); % ================== 用户独立参数 =============================== nUE = LTE_par.nUE; LTE_par.UE_par.nLayer = zeros(1,nUE); % 用户层数 LTE_par.UE_par.PMI = zeros(1,nUE); % 预编码序号 LTE_par.UE_par.rvidx = zeros(2,nUE); % 重传冗余版本 LTE_par.UE_par.IMCS = zeros(2,nUE); % 调制编码序号 LTE_par.UE_par.Qm = zeros(2,nUE); % 调制方式 LTE_par.UE_par.nRE = zeros(1,nUE); % 资源粒子数 LTE_par.UE_par.M_0_SYMB = zeros(1,nUE); % 码字0的复值符号数 LTE_par.UE_par.sizeTB = zeros(2,nUE); % 传输块大小 for iUE = 1:nUE if iUE <= 2 % 不多于两个用户时,从界面上独立配置两个用户参数 LTE_par.UE_par.nCW(iUE) = par.nCW(iUE); % 用户码字数 LTE_par.UE_par.nLayer(iUE) = par.nLayer(iUE); % 用户层数 LTE_par.UE_par.PMI(iUE) = par.PMI(iUE); % 用户PMI for iTB =1: LTE_par.UE_par.nCW(iUE) LTE_par.UE_par.rvidx(iTB,iUE) = par.rvidx(iTB,iUE); % 用户循环冗余版本 LTE_par.UE_par.IMCS(iTB,iUE) = par.IMCS(iTB,iUE); % 用户编码调制序号 end else % 多于两个用户时,从界面上独立配置前两个用户参数,其他用户独立参数参照UE1 LTE_par.UE_par.nCW(iUE) = par.nCW(1); % 用户码字数 LTE_par.UE_par.nLayer(iUE) = par.nLayer(1); LTE_par.UE_par.PMI(iUE) = par.PMI(1); for iTB =1: LTE_par.UE_par.nCW(iUE) LTE_par.UE_par.rvidx(iTB,iUE) = par.rvidx(iTB,1); % 用户循环冗余版本 LTE_par.UE_par.IMCS(iTB,iUE) = par.IMCS(iTB,1); % 用户编码调制序号 end end end end % infoSize = [120 176 208 256 328 424 504 584 680 776 776 872 1000 1128 1256 1416 1544 1544 1608 1800 1992 2152 2344 2472 2664 2856 2984 3112 3752]; % IMCS = 9; % if IMCS<=9 % ITBS = IMCS; % Qm = 2; % elseif IMCS<=16 % ITBS = IMCS-1; % Qm = 4; % else % ITBS = IMCS-2; % Qm = 6; % end % LTE_par.UE_par.Qm = Qm*ones(LTE_par.UE_par.nCW,LTE_par.nUE); % 仅测试用 % LTE_par.UE_par.sizeTB(1,:) = infoSize(IMCS+1)*ones(1,LTE_par.nUE); % 仅测试用 % LTE_par.UE_par.nRE = 660-30; % 仅测试用 去掉单天线导频位置 cfi=2 720 cfi = 3 660 % LTE_par.UE_par.nRB = 5*ones(1,LTE_par.nUE); % 仅测试用 % LTE_par.UE_par.IMCS = IMCS*ones(LTE_par.UE_par.nCW,LTE_par.nUE);% 仅测试用 % LTE_par.CFI = 3; % IMCS ITBS 信息 码率 ratex1024 调制 % 0 0 120 0.1143 117 2 % 1 1 176 0.1587 163 2 % 2 2 208 0.1841 189 2 % 3 3 256 0.2222 228 2 % 4 4 328 0.2794 286 2 % 5 5 424 0.3556 364 2 % 6 6 504 0.4190 429 2 % 7 7 584 0.4825 494 2 % 8 8 680 0.5587 572 2 % 9 9 776 0.6349 650 2 % 10 9 776 0.3175 325 4 % 11 10 872 0.3556 364 4 % 12 11 1000 0.4063 416 4 % 13 12 1128 0.4571 468 4 % 14 13 1256 0.5079 520 4 % 15 14 1416 0.5714 585 4 % 16 15 1544 0.6222 637 4 % 17 15 1544 0.4148 425 6 % 18 16 1608 0.4317 442 6 % 19 17 1800 0.4825 494 6 % 20 18 1992 0.5333 546 6 % 21 19 2152 0.5757 589 6 % 22 20 2344 0.6265 641 6 % 23 21 2472 0.6603 676 6 % 24 22 2664 0.7111 728 6 % 25 23 2856 0.7619 780 6 % 26 24 2984 0.7958 815 6 % 27 25 3112 0.8296 850 6 % 28 26 3752 0.9989 1023 6